Skip to content

ci: align the zero-leak check to the charter symbol set#449

Open
mfw78 wants to merge 1 commit into
feat/m2-body-versions-handshakefrom
feat/m2-zero-leak-check-align
Open

ci: align the zero-leak check to the charter symbol set#449
mfw78 wants to merge 1 commit into
feat/m2-body-versions-handshakefrom
feat/m2-zero-leak-check-align

Conversation

@mfw78

@mfw78 mfw78 commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What

Narrows the venue-agnostic CI scan from a broad venue-vocabulary regex to the curated charter symbol set (nexum:intent|value-flow|VenueAdapter|synthesize_venue|nexum:adapter|PoolRouter), scopes it to crates/nexum-runtime/src, and documents the zero-leak charter in the crate's top-level rustdoc.

Why

The old regex over-matched (Cow, intentional, etc. needed manual carve-outs) and scanned the whole crate directory instead of just sources. A curated symbol set tied to the actual forbidden names keeps the scan precise and stops opaque extension payloads from false-flagging, per the M2 zero-leak invariant.

Closes #384

Testing

  • ./scripts/check-venue-agnostic.sh passes locally against the current tree.

AI Assistance

Implemented with Claude Code assistance.

Scan the runtime sources for the charter set only (nexum:intent,
value-flow, VenueAdapter, synthesize_venue, nexum:adapter, PoolRouter),
dropping the loose word-shape sweep that false-flagged the opaque
extension-map fixtures; keep the crate-graph and WIT-leaf checks, and
state the invariant in the nexum-runtime crate charter. The CI job
stays advisory until the physical repo cut.

@lgahdl lgahdl left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The false-positive problem this PR fixes (Cow/intentional needing carve-outs, scanning the whole crate dir) is real and worth fixing, but the specific fix trades false positives for false negatives on the current vocabulary. Three of the six charter symbols — nexum:intent, nexum:adapter, PoolRouter — were already renamed away in #428 (to videre:types, folded into videre:venue, and VenueRegistry respectively) and then relocated entirely out of nexum-runtime in #447. Checking for them now is checking for names that can never reappear, since they no longer exist anywhere in the codebase to leak.

More importantly, the current post-rename vocabulary that would actually indicate a real leak — videre:types, videre:venue, VenueRegistry, VenueActor, VenueId — isn't in the charter list at all (only VenueAdapter, a distinct trait name, and the substring value-flow, which happens to still match videre:value-flow, survive by coincidence). Concretely: if a future change reintroduced use videre_host::VenueRegistry into crates/nexum-runtime/src, exactly the regression this check exists to catch, this scan would report a clean pass. Since git blame/history on this check isn't the point — the invariant it's meant to enforce is about the current naming, not the pre-rename one. Worth updating the charter set to the post-rename names (videre:|VenueRegistry|VenueActor|VenueId|VenueAdapter, or similar) rather than the retired ones.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants